热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

松鼠|化身_生成式NFT艺术品创作教程

篇首语:本文由编程笔记#小编为大家整理,主要介绍了生成式NFT艺术品创作教程相关的知识,希望对你有一定的参考价值。在这个教程中,我们将学习如何使用使用一组基

篇首语:本文由编程笔记#小编为大家整理,主要介绍了生成式NFT艺术品创作教程相关的知识,希望对你有一定的参考价值。


在这个教程中,我们将学习如何使用使用一组基础特征实现生成式NFT艺术品。使用的工具包括Python和Scrappy Squirrels提供的基础特征库。



用熟悉的语言学习 以太坊DApp开发 :Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart


像Cryptopunks 和Bored Ape Yacht Club这样的Marquee NFT 项目 已经产生了数亿美元的收入,并让
开发者成为了百万富翁。这些项目(以及当今大多数其他成功的 NFT 项目)的共同点是它们都是PFP 项目。这意味着它们通常是 10,000 多个化身的集合,其中每个化身都是独一无二的,并且具有一组特征。

在这个教程中,我们将学习如何使用自定义稀有度生成这样的收藏。我们将使用Scrappy Squirrels团队创建的库来完成此任务。在本教程结束时,你将生成自己的自定义头像集合以及关联的元数据。


1、准备工作

我们的库是用 Python 编写的,因此需要在计算机上安装Python,此外你还需要 pip, 它将为我们安装重要的软件包。可以到此网站并下载最新版本的 Python。即使不熟悉如何编程(使用 Python 或其他方式)也可以学习本教程。

你还需要一位了解数字艺术的艺术家来创建自己的定制收藏。但是,这不是学习本教程所必需的。我们将为你提供某些测试图像。

作为本教程的一部分,我们将引导你完成创建Scrappy Squirrels NFT 的过程,这是我们已经启动的一个真实项目。本教程以及后续教程是我们路线图目标的一部分,旨在让人们更容易访问 NFT 和区块链。

松鼠已经使用超过 85 个特征生成。这里有几个示例:


2、生成式NFT图像的实现机制

我们在上面看到的松鼠是通过将 PNG 图像堆叠在一起生成的。尽管没有蓝筹 NFT 项目描述他们如何产生艺术,但我们确信这也是他们所做的。你看到的几乎每个 NFT 头像都是一组堆叠的 PNG 图像。

从右上角开始,如果你将每个特征图像按顺时针顺序堆叠,一个接一个,最终会得到位于中心的图像。这里有几点需要注意:


  • 每个特征图像(以及最终的松鼠头像)具有完全相同的尺寸。
  • 除了背景特征(这是第一个特征)之外,其他所有特征图像都有透明背景。
  • 特征图像必须堆叠以获得正确的松鼠头像(即从右上角顺时针方向)。
  • 特征图像的绘制方式使其位置相对于所有其他特征都有意义。
  • 我们可以将任何特征与同一类别的另一个特征交换(例如,将红色衬衫换成蓝色衬衫)。因此,在这种情况下,如果每个特征 类别有 10 个特征,我们理论上可以生产 1 亿只不同的松鼠。

因此,艺术家的工作是创建各种特征类别的多个图像。你可以根据需要拥有尽可能多或尽可能少的特征类别。请记住,可能的组合数量会随着特征类别的数量呈指数增长。

在Scrappy Squirrels项目中,我们创建了 8 个特征类别:

每个特征类别都有不同数量的特征图像。例如,我们有 11 种不同的衬衫可供使用:

现在轮到你了。你需要确定要使用的特征类别并为每个类别生成特征图像。确保它们满足上述条件(应具有相同的尺寸,应正确定位等)。
此外,请确保正确命名特征图像。你为图像命名的内容将出现在元数据文件中。

完成此操作后,我们现在就可以使用库自动生成我们的收藏了!如果你不是艺术家(或无法接触艺术家),请不要担心!我们
有一些示例图像可供你使用。



注意:目前该库仅能够处理 PNG 图像。我们将很快增加对其他媒体类型的支持。



3、下载库并安装所需的软件包

我们的生成式NFT艺术库在 GitHub上 免费提供。

下载库后,打开终端或命令提示符,然后运行以下命令:

pip install Pillow pandas progressbar2

运行此命令将安装我们的库所依赖的三个重要的 Python 包:


  • Pillow:一个图像处理库,可以帮助我们堆叠特征图像。
  • Pandas:一个数据分析库,可以帮助我们生成和保存图像元数据。
  • Progressbar:一个库,它会告诉我们图像生成发生时的进度。

4、添加自定义资产

在你下载的generation-art-nft存储库中,会看到有一个assets文件夹。如果有可用的自定义特征艺术品,请将此文件夹的内容替换为你的资产。在我们的例子中,assets文件夹有 8 个子文件夹,代表适当命名的类别(见上文),每个子文件夹都有该特定类别的特征图像。

如果没有自定义图稿,请保持默认资产文件夹不变。


5、配置 config.py 文件

这是生成头像集合之前的最后一步(也许也是最重要的一步)。打开config.py文件并按照以下说明进行填写。

配置文件由一个名为 CONFIG 的 Python 变量组成。CONFIG 是一个 Python 列表(由 [] 封装)。它包含按需要堆叠的顺序排列的特征类别列表。这里的顺序非常重要。这是一个示例配置。

CONFIG = [

'id': 1,
'name': 'background',
'directory': 'Background',
'required': True,
'rarity_weights': None,
,

'id': 2,
'name': 'body',
'directory': 'Body',
'required': True,
'rarity_weights': 'random'
,

'id': 3,
'name': 'eyes',
'directory': 'Expressions',
'required': True,
'rarity_weights': None
,

'id': 4,
'name': 'head_gear',
'directory': 'Head Gear',
'required': False,
'rarity_weights': None
,

'id': 5,
'name': 'clothes',
'directory': 'Shirt',
'required': False,
'rarity_weights': None
,

'id': 6,
'name': 'held_item',
'directory': 'Misc',
'required': True,
'rarity_weights': None,
,

'id': 7,
'name': 'hands',
'directory': 'Hands',
'required': True,
'rarity_weights': None,
,

'id': 8,
'name': 'wristband',
'directory': 'Wristband',
'required': False,
'rarity_weights': [100, 5, 5, 15, 5, 5, 15, 15, 5, 1]
,
]

每个特征类别都表示为一个 Python 字典(由 封装)。所需要做的就是在 CONFIG 列表中按顺序定义这些特征类别字典。

特征类别字典有 5 个它需要的键。它们是id、name、directory、required 和 rarity_weights。创建新层(或替换现有层)时,请确保已定义所有这些键。

下面是为每个键分配值的方式:


  • id:层数。例如,如果主体是需要堆叠的第二个特征类别(或层),它的 id 将为 2。请注意,层仍必须以正确的顺序定义。
  • name:特征类别的名称。这可以是你选择的任何内容。它将出现在元数据中。
  • directory:资产中包含该特定特征类别图像的文件夹的名称。
  • required:如果每个图像都需要此类别。某些特征类别(例如背景、身体和眼睛)必须出现在每个头像中,而某些其他 类别(例如头饰、腕带或衣服)可以是可选的。我们强烈建议你将第一层所需的值设置为 true。
  • rarity_weights:这个类别将决定你的特征有多普遍(或稀有)。查看下一部分以获取更多详细信息。

6、配置稀有权重

rarity_weights键可以采用三种值:None、Random 或 Python 列表。让我们一一探索每个值。

如果将 rarity_weights 值设置为None,每个特征将被分配相同的权重。因此,如果有 5 个特征,则每个特征将出现在大约 20% 的化身中。

如果required为 False,则同样可能根本无法获得该特定特征。在前一种情况下,如果required属性设置为 false,则每个特征将出现在大约 16.6% 的头像中。另有 16.6% 的化身根本没有这种特殊特征。

将rarity_weights设置为 ‘random’(注意括号)会随机为每个类别分配权重。我们强烈建议你不要使用此功能。始终采用相同或自定义的用户定义稀有度。

Python 列表可能是分配稀有度权重的最常用方法。首先要做的是转到特征类别文件夹并按名称对特征图像进行排序。例如,对Wristbands文件夹进行排序将为我们生成以下内容:

可以看到我们有 9 种不同类型的腕带。现在,我们需要定义一个 Python 列表(由 [] 封装),其中每个数字代表按升序分配给特定特征的权重。

如果必需的设置为 True,则权重的数量应等于该类别的特征数量。如果必需的设置为 False,那么权重的数量应该等于特征数量加一。

在我们的例子中,如果需要腕带,我们将在列表中定义九个权重,如果不需要,我们将定义十个权重。在后一种情况下,第一个重量将是与根本没有腕带相关的重量。

让我们看一下我们为腕带定义的rarity_weights。

[100、5、5、15、5、5、15、15、5、1]

由于不需要腕带,我们设置了十个重量(九加一)。第一个重量是与根本没有腕带相关的重量。第二个权重与Cheetah乐队相关联,第三个权重与Giraffe乐队相关联,依此类推。注意这里的字母顺序。

权重越高,特定特征越常见。例如,Cheetah的权重为 5,没有手环的权重为 100。这意味着拥有Cheetah手环的几率是没有手环的 20 倍。


7、生成NFT艺术品集合

一旦配置了 config.py 文件,现在是时候生成你的集合了。打开终端(或命令提示符)并导航到generation-art-nft文件夹运行以下命令:

python nft.py

运行此命令将启动图像生成程序。它将首先检查 config.py 文件是否有效。接下来,它将告诉你不同的可能组合的总数。然后它会询问你要创建多少个头像。我们建议创建比你想要创建的多 20% 的内容,这样即使在删除重复项之后也有足够的剩余。在我们的例子中,我们选择创建 12,000 个化身,尽管我们想要 10,000 个。然后它会要求你为集合命名,然后开始生成过程。

我们花了大约 30 分钟来生成 11,957 个头像(删除重复后)。图像及其相关元数据将在输出文件夹中可用。

图像文件夹看起来像这样。请注意,这只是一个示例,而不是我们生成的最终松鼠:

元数据文件是一个 CSV 文件,可以将其导入 Excel 并进行分析(例如哪个特征最稀有、哪个特征组合最常见、头像稀有度排名等)。



原文链接:生成式NFT艺术品创作教程 — 汇智网


推荐阅读
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • 腾讯T3大牛亲自教你!2021大厂Android面试经验,经典好文
    本篇将由环境搭建、实现原理、编程开发、插件开发、编译运行、性能稳定、发展未来等七个方面,对当前的ReactNative和Flutter进行全面的分析对比, ... [详细]
  • 这篇文章主要讲解了“如何应对Android面试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何应对 ... [详细]
  • JavaScript和Python是用于构建各种应用程序的两种有影响力的编程语言。尽管JavaScript多年来一直是占主导地位的编程语言,但Python的迅猛发展有 ... [详细]
  • DAO设计模式(九)_1.设计分层初步 ... [详细]
  • Flutter第六章(BottomNavigationBar ,AppBar,TabBar ,TabController 以及案例)
    版权声明:本文为作者原创书籍。转载请注明作者和出处,未经授权,严禁私自转载,侵权必究!!!情感语录:如果你想得到从未拥有过的东西,那么你必须去做从未做过的事 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • flutter图片缓存Flutter的图片缓存机制有问题(可能是我使用的版本1.12.13有问题)网络图片会默认缓存到本地,但是不管图片是不是完整的或者损坏的,导致页面在下次进入的 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter添加APP启动StoryView相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
mobiledu2502880273
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有